package com.example.orderservice.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.orderservice.domain.dto.OrderPayDTO;
import com.example.orderservice.domain.entity.Order;
import com.example.orderservice.domain.vo.pointVo;


import java.util.List;

/**
 * 订单服务接口
 * 定义订单管理的核心业务操作
 *
 * @author czwa
 */
public interface IOrderService extends IService<Order> {

    /**
     * 创建订单
     *
     * @param order 订单实体对象
     * @return 订单创建结果（包含订单编号）
     */
    String addOrder(Order order);

    /**
     * 获取用户所有订单
     *
     * @return 用户订单列表
     */
    List<Order> getAllOrder();

    /**
     * 获取用户未支付订单
     *
     * @return 未支付订单列表
     */
    List<Order> getNoPaidOrder();

    /**
     * 获取用户已处理订单
     *
     * @return 已处理订单列表
     */
    List<Order> getProcessedOrder();

    /**
     * 获取用户已取消订单
     *
     * @return 已取消订单列表
     */
    List<Order> getCanceledOrder();

    /**
     * 订单支付处理
     *
     * @param order 支付请求DTO
     */
    void payOrder(OrderPayDTO order);

    /**
     * 取消支付
     *
     * @param id 订单ID
     */
    void cancelPay(int id);

    /**
     * 增加用户积分
     *
     * @param pointVo 积分信息VO
     */
    void addPoint(pointVo pointVo);
}